<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/pageblock-flags.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/pageblock-flags.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * Macros for manipulating and testing flags related to a</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> * pageblock_nr_pages number of pages.</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> *</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> * This program is free software; you can redistribute it and/or modify</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> * it under the terms of the GNU General Public License as published by</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> * the Free Software Foundation version 2 of the License</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> *</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> * This program is distributed in the hope that it will be useful,</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="11" /><span class="True">      11:</span> <span class="k"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> * GNU General Public License for more details.</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> *</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> * You should have received a copy of the GNU General Public License</span>
<a name="15" /><span class="True">      15:</span> <span class="k"> * along with this program; if not, write to the Free Software</span>
<a name="16" /><span class="True">      16:</span> <span class="k"> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> *</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> * Copyright (C) IBM Corporation, 2006</span>
<a name="19" /><span class="True">      19:</span> <span class="k"> *</span>
<a name="20" /><span class="True">      20:</span> <span class="k"> * Original author, Mel Gorman</span>
<a name="21" /><span class="True">      21:</span> <span class="k"> * Major cleanups and reduction of bit operations, Andy Whitcroft</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="True">      23:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_UEFHRUJMT0NLX0ZMQUdTX0hfMA__"><span class="b">PAGEBLOCK_FLAGS_H</span></a>
<a name="24" /><span class="True">      24:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEFHRUJMT0NLX0ZMQUdTX0hfMA__"><span class="b">PAGEBLOCK_FLAGS_H</span></a>
<a name="25" /><span class="True">      25:</span> 
<a name="26" /><span class="True">      26:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="27" /><span class="True">      27:</span> 
<a name="28" /><span class="True">      28:</span> <span class="k">/* Bit indices that affect a whole block of pages */</span>
<a name="29" /><span class="True">      29:</span> <span class="m">enum</span> <span class="b">pageblock_bits</span> <span class="f">{</span>
<a name="30" /><span class="True">      30:</span>     <span class="b">PB_migrate</span><span class="f">,</span>
<a name="31" /><span class="True">      31:</span>     <span class="b">PB_migrate_end</span> <span class="f">=</span> <span class="b">PB_migrate</span> <span class="f">+</span> <span class="c">3</span> <span class="f">-</span> <span class="c">1</span><span class="f">,</span>
<a name="32" /><span class="True">      32:</span>             <span class="k">/* 3 bits required for migrate types */</span>
<a name="33" /><span class="False">      33:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_COMPACTION</span>
<a name="34" /><span class="False">      34:</span>     <span class="b">PB_migrate_skip</span><span class="f">,</span><span class="k">/* If set the block is skipped by compaction */</span>
<a name="35" /><span class="True">      35:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_COMPACTION */</span>
<a name="36" /><span class="True">      36:</span>     <span class="b">NR_PAGEBLOCK_BITS</span>
<a name="37" /><span class="True">      37:</span> <span class="f">}</span><span class="f">;</span>
<a name="38" /><span class="True">      38:</span> 
<a name="39" /><span class="True">      39:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0hVR0VUTEJfUEFHRV8w"><span class="b">CONFIG_HUGETLB_PAGE</span></a>
<a name="40" /><span class="True">      40:</span> 
<a name="41" /><span class="False">      41:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_HUGETLB_PAGE_SIZE_VARIABLE</span>
<a name="42" /><span class="False">      42:</span> 
<a name="43" /><span class="False">      43:</span> <span class="k">/* Huge page sizes are variable */</span>
<a name="44" /><span class="False">      44:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_noref.html#_cGFnZWJsb2NrX29yZGVyXzA_"><span class="b">pageblock_order</span></a><span class="f">;</span>
<a name="45" /><span class="False">      45:</span> 
<a name="46" /><span class="True">      46:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */</span>
<a name="47" /><span class="True">      47:</span> 
<a name="48" /><span class="True">      48:</span> <span class="k">/* Huge pages are a constant size */</span>
<a name="49" /><span class="True">      49:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cGFnZWJsb2NrX29yZGVyXzA_"><span class="b">pageblock_order</span></a>        <a href="cpu.c_macros_noref.html#_SFVHRVRMQl9QQUdFX09SREVSXzA_"><span class="b">HUGETLB_PAGE_ORDER</span></a>
<a name="50" /><span class="True">      50:</span> 
<a name="51" /><span class="True">      51:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */</span>
<a name="52" /><span class="True">      52:</span> 
<a name="53" /><span class="False">      53:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* CONFIG_HUGETLB_PAGE */</span>
<a name="54" /><span class="False">      54:</span> 
<a name="55" /><span class="False">      55:</span> <span class="k">/* If huge pages are not used, group by MAX_ORDER_NR_PAGES */</span>
<a name="56" /><span class="False">      56:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cGFnZWJsb2NrX29yZGVyXzA_"><span class="b">pageblock_order</span></a>        <span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX09SREVSXzA_"><span class="b">MAX_ORDER</span></a><span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="57" /><span class="False">      57:</span> 
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_HUGETLB_PAGE */</span>
<a name="59" /><span class="True">      59:</span> 
<a name="60" /><span class="True">      60:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cGFnZWJsb2NrX25yX3BhZ2VzXzA_"><span class="b">pageblock_nr_pages</span></a>    <span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_cGFnZWJsb2NrX29yZGVyXzA_"><span class="b">pageblock_order</span></a><span class="f">)</span>
<a name="61" /><span class="True">      61:</span> 
<a name="62" /><span class="True">      62:</span> <span class="k">/* Forward declaration */</span>
<a name="63" /><span class="True">      63:</span> <span class="m">struct</span> <span class="b">page</span><span class="f">;</span>
<a name="64" /><span class="True">      64:</span> 
<a name="65" /><span class="True">      65:</span> <span class="k">/* Declarations for getting and setting flags. See mm/page_alloc.c */</span>
<a name="66" /><span class="True">      66:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">get_pageblock_flags_group</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span>
<a name="67" /><span class="True">      67:</span>                     <span class="m">int</span> <span class="b">start_bitidx</span><span class="f">,</span> <span class="m">int</span> <span class="b">end_bitidx</span><span class="f">)</span><span class="f">;</span>
<a name="68" /><span class="True">      68:</span> <span class="m">void</span> <span class="b">set_pageblock_flags_group</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">,</span>
<a name="69" /><span class="True">      69:</span>                     <span class="m">int</span> <span class="b">start_bitidx</span><span class="f">,</span> <span class="m">int</span> <span class="b">end_bitidx</span><span class="f">)</span><span class="f">;</span>
<a name="70" /><span class="True">      70:</span> 
<a name="71" /><span class="False">      71:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_COMPACTION</span>
<a name="72" /><span class="False">      72:</span> <span class="f">#</span><span class="n">define</span> <span class="b">get_pageblock_skip</span><span class="f">(</span><span class="b">page</span><span class="f">)</span> \
<a name="73" /><span class="False">      73:</span>             <span class="b">get_pageblock_flags_group</span><span class="f">(</span><span class="b">page</span><span class="f">,</span> <span class="b">PB_migrate_skip</span><span class="f">,</span>     \
<a name="74" /><span class="False">      74:</span>                             <span class="b">PB_migrate_skip</span><span class="f">)</span>
<a name="75" /><span class="False">      75:</span> <span class="f">#</span><span class="n">define</span> <span class="b">clear_pageblock_skip</span><span class="f">(</span><span class="b">page</span><span class="f">)</span> \
<a name="76" /><span class="False">      76:</span>             <span class="b">set_pageblock_flags_group</span><span class="f">(</span><span class="b">page</span><span class="f">,</span> <span class="c">0</span><span class="f">,</span> <span class="b">PB_migrate_skip</span><span class="f">,</span>  \
<a name="77" /><span class="False">      77:</span>                             <span class="b">PB_migrate_skip</span><span class="f">)</span>
<a name="78" /><span class="False">      78:</span> <span class="f">#</span><span class="n">define</span> <span class="b">set_pageblock_skip</span><span class="f">(</span><span class="b">page</span><span class="f">)</span> \
<a name="79" /><span class="False">      79:</span>             <span class="b">set_pageblock_flags_group</span><span class="f">(</span><span class="b">page</span><span class="f">,</span> <span class="c">1</span><span class="f">,</span> <span class="b">PB_migrate_skip</span><span class="f">,</span>  \
<a name="80" /><span class="False">      80:</span>                             <span class="b">PB_migrate_skip</span><span class="f">)</span>
<a name="81" /><span class="True">      81:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_COMPACTION */</span>
<a name="82" /><span class="True">      82:</span> 
<a name="83" /><span class="True">      83:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* PAGEBLOCK_FLAGS_H */</span>
<a name="84" /><span class="True">      84:</span> </pre>
  </body>
</html>
